package com.boot.security.server.dict.mapper;

import com.boot.security.server.dict.model.DataDictDetails;
import com.boot.security.server.dict.param.DictDetailsParam;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 字典详情dao
 * @author Administrator
 */
@Mapper
public interface DataDictDetailsMapper {

    /**
     * 根据字典id查询并按序号排序
     * @param dictId
     * @param page
     * @param limit
     * @return
     */
    List<DataDictDetails> findByDictId (int dictId, Integer page, Integer limit);

    /**
     * 根据字典id查询并按创建时间排序
     * @param dictId
     * @return
     */
    List<DataDictDetails> queryByDictId (Integer dictId);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    DataDictDetails findById (Integer id);

    /**
     * 添加
     * @param details
     * @return
     */
    int add (DataDictDetails details);

    /**
     * 修改
     * @param details
     * @return
     */
    int update (DataDictDetails details);

    /**
     * 删除
     * @param id
     * @return
     */
    int delete (Integer id);

    /**
     * 根据值和字典id判断值是否存在
     * @param dataValue
     * @param dictId
     * @return
     */
    int findByDataValueAndDictId (String dataValue, int dictId);

    /**
     * 根据key和字典id判断key是否存在
     * @param dataKey
     * @param dictId
     * @return
     */
    int findByDataKeyAndDictId (Integer dataKey, int dictId);

    /**
     * 根据key和字典id查询value
     * @param dataKey
     * @param dictId
     * @return
     */
    String findDataValueByDataKeyAndDictId (String dataKey, int dictId);

    /**
     * 根据值和字典id以及id判断值是否存在 - 修改
     * @param dataValue
     * @param dictId
     * @param id
     * @return
     */
    int findByDataValueAndDictIdAndId (String dataValue, int dictId, Integer id);

    /**
     * 根据key和字典id以及id判断key是否存在
     * @param dataKey
     * @param dictId
     * @param id
     * @return
     */
    int findByDataKeyAndDictIdAndId (Integer dataKey, int dictId, Integer id);

    /**
     * 统计
     * @param param
     * @return
     */
    int count (DictDetailsParam param);

    /**
     * 根据字典id查询详情中最大的key
     * @param dictId
     * @return
     */
    Integer findMaxDataKeyByDictId (Integer dictId);

    int queryByDictIdAndDictValue(int dictId, String value);
}